import unittest

from parameterized import parameterized

from automatic.base.get_driver import GetDriver
from automatic.base.get_logger import GetLogger
from automatic.page.page_login import PageLogin
from automatic.tools.read_text import read_txt

#获取log 日志器
log=GetLogger().get_logger()

def get_data():
    arrs=[]
    for data in read_txt("login.txt"):
        arrs.append(tuple(data.strip().split(",")))
    return arrs[1:]


#新建 登录测试类 并 继承 unittest.TestCase
class TestLogin(unittest.TestCase):
    #新建setUpClass
    @classmethod
    def setUpClass(cls)->None:
        try:
            #实例化 并 获取 driver
            cls.driver=GetDriver.get_driver()
            #实例化PageLogin()
            cls.login=PageLogin(cls.driver)
        except Exception as e:
            #截图
            cls.login.base_get_img()
            #日志
            log.error("错误：{}".format(e))

    #新建tearDownClass
    @classmethod
    def tearDownClass(cls)->None:
        #关闭driver驱动对象
        GetDriver.quit_driver()

    #新建 登录测试方法
    #使用parameterized进行参数化
    @parameterized.expand(get_data())
    def test_login(self,username,password,expect_result,status):
        try:
            #调用 登录业务
            self.login.page_login(username,password)

            #判断是否为正向
            if status=="true":
                #断言是否登录成功
                try:
                    self.assertTrue(self.login.page_if_login_success())
                except Exception as e:
                    #截图
                    self.login.base_get_img()
                    #日志
                    log.error("出错了：{}".format(e))
                #点击退出登录
                self.login.page_click_logout_link()
            #逆向用例
            else:
                #获取错误提示信息
                msg=self.login.page_get_err_info()
                print("msg:",msg)
                try:
                    self.assertEqual(msg,expect_result)
                except Exception as e:
                    #截图
                    self.login.base_get_img()
                    #日志
                    log.error("出错了：{}".format(e))
        except Exception as e:
            #截图
            self.login.base_get_img()
            #日志
            log.error("出错了：{}".format(e))

if __name__ == '__main__':
    unittest.main()